package com.zw.design.pattern.creational.singleton.v2;

/****
 * 升级的版本单例类
 */
public class LazyDoubleSingleton {
    //该地方使用缓存一致性协议
    //静态成员 使用volatile 进行修饰它
    private volatile static LazyDoubleSingleton lazySingleton=null;

    //私有化构造函数
    private LazyDoubleSingleton(){

    }



    /****
     * 改造粗略的单例模式
     * @return
     */
    public synchronized static LazyDoubleSingleton getInstance(){
        if (lazySingleton == null) {
            synchronized(LazyDoubleSingleton.class) {
                if (lazySingleton == null) {
                    lazySingleton = new LazyDoubleSingleton();
                    //1.分配内存给这个对象
                    //3 LazyDoubleSingleton 设置指向刚才分配这个内存对象
                    //2 初始化这个对象
                }
            }
        }
        return lazySingleton;
    }
}
